//package en.edu.zucc.pb.loginapplication.util;
//
//import android.database.Cursor;
//import android.database.sqlite.SQLiteDatabase;
//import android.database.sqlite.SQLiteOpenHelper;
//
//import androidx.sqlite.db.SimpleSQLiteQuery;
//
//import java.util.List;
//
//import en.edu.zucc.pb.loginapplication.AppDatabase;
//
//public class RoomUtil extends SQLiteOpenHelper {
//    public SQLiteDatabase getDatabase() {
//        return getDatabase(false);
//    }
//
//    public SQLiteDatabase getDatabase(boolean forceWritable) {
//        try {
//            return forceWritable ? getWritableDatabase() : getReadableDatabase();
//        } catch (IllegalStateException e) {
//            return this.db;
//        }
//    }
//
//
//    public static <T> List<T> select(Connection conn, String sql, T obj,
//                                    T likeObj, String addSql) throws DbException {
//
//        try {
////            https://blog.csdn.net/weixin_26744853/article/details/108167419
////         new SimpleSQLiteQuery()
//            StringBuilder stringBuilder = new StringBuilder(sql);
//            StringBuilder sqlNow = where(obj, stringBuilder);
//            if (likeObj != null) {
//                whereLike(likeObj, stringBuilder);
//            }
//
////            sel  * where id= 1 and ..
////            and time <= ? and time >= ?
//            if (addSql != null) {
//                sqlNow.append("   ").append(addSql);
////            int where = sqlNow.indexOf("where");
////            sqlNow.replace(where,where+5,"and");
//
//                int whereStart = sqlNow.indexOf(" where ");
//                if (whereStart == -1) {
//
//                    int andStart = sqlNow.indexOf(" and ");
//                    if (andStart != -1) {
//                        sqlNow.replace(andStart, andStart + 5, " where ");
//                    }
////                如果没有 and ，就不用替换了  ， 也就是 没有and 也没有where
//
//                }
//                //            有where  就不管
//
//            }
//
//
////            sqlNow+=addSql;
////            String sqlStr = String.valueOf(sqlNow);
////            sqlStr += addSql;
//            PreparedStatement pst = conn.prepareStatement(String.valueOf(sqlNow));
//
////            https://blog.csdn.net/m0_37168878/article/details/83375849
//            SimpleSQLiteQuery query = new SimpleSQLiteQuery(String.valueOf(sqlNow));
//            AppDatabase database;
////            https://blog.csdn.net/m0_37168878/article/details/83375849
//            List viaQuery = database.getBaseDao().getViaQuery(query);
////            database.getUserDao().
//            User user2 = rawDao.getUserViaQuery(query);
//            ResultSet resultSet = pst.executeQuery();
//
//            List<T> list = new ArrayList<>();
//            while (resultSet.next()) {
//
//                T type = getInstanceNoParam(obj);
//
//                putValToObj(resultSet, type);
//
//                list.add(type);
//
//            }
//
//            try (Cursor cursor = getDatabase().rawQuery(query, null)) {
//
//                if (cursor.moveToFirst()) {
//                    do {
//                        int i = 0;
//                        Note note = new Note();
//                        note.setCreation(cursor.getLong(i++));
//                        note.setLastModification(cursor.getLong(i++));
//                        note.setTitle(cursor.getString(i++));
//                        note.setContent(cursor.getString(i++));
//                        note.setArchived("1".equals(cursor.getString(i++)));
//                        note.setTrashed("1".equals(cursor.getString(i++)));
//                        note.setAlarm(cursor.getString(i++));
//                        note.setReminderFired(cursor.getInt(i++));
//                        note.setRecurrenceRule(cursor.getString(i++));
//                        note.setLatitude(cursor.getString(i++));
//                        note.setLongitude(cursor.getString(i++));
//                        note.setAddress(cursor.getString(i++));
//                        note.setLocked("1".equals(cursor.getString(i++)));
//                        note.setChecklist("1".equals(cursor.getString(i++)));
//
//                        // Eventual decryption of content
////          内容的最终解密
//                        if (Boolean.TRUE.equals(note.isLocked())) {
//                            note.setContent(
//                                    Security.decrypt(note.getContent(), Prefs.getString(PREF_PASSWORD, "")));
//                        }
//
//                        // Set category
//                        long categoryId = cursor.getLong(i++);
//                        if (categoryId != 0) {
//                            Category category = new Category(categoryId, cursor.getString(i++),
//                                    cursor.getString(i++), cursor.getString(i));
//                            note.setCategory(category);
//                        }
//
//                        // Add eventual attachments uri
////          添加最终附件uri
//                        note.setAttachmentsList(getNoteAttachments(note));
//
//                        // Adding note to list
////          向列表中添加 笔记
//                        noteList.add(note);
//
//                    } while (cursor.moveToNext());
//                }
//
//            }
//
//            return list;
//
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            throw new DbException(ex);
//        }
//    }
//
//    @Override
//    public void onCreate(SQLiteDatabase db) {
//
//    }
//
//    @Override
//    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//
//    }
//}
